home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 2 / AACD 2.iso / AACD / Programming / fpc / amigaunits / nonvolatile.pas < prev    next >
Pascal/Delphi Source File  |  1998-09-22  |  4KB  |  179 lines

  1. {
  2.     This file is part of the Free Pascal run time library.
  3.  
  4.     A file in Amiga system run time library.
  5.     Copyright (c) 1998 by Nils Sjoholm
  6.     member of the Amiga RTL development team.
  7.  
  8.     See the file COPYING.FPC, included in this distribution,
  9.     for details about the copyright.
  10.  
  11.     This program is distributed in the hope that it will be useful,
  12.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  14.  
  15.  **********************************************************************}
  16.  
  17. UNIT nonvolatile;
  18.  
  19. INTERFACE
  20. USES exec;
  21.  
  22.  
  23. Type
  24.  pNVInfo = ^tNVInfo;
  25.  tNVInfo = record
  26.     nvi_MaxStorage,
  27.     nvi_FreeStorage : ULONG;
  28.  end;
  29.  
  30. {***************************************************************************}
  31.  
  32.  
  33.  pNVEntry = ^tNVEntry;
  34.  tNVEntry = record
  35.     nve_Node        : tMinNode;
  36.     nve_Name        : STRPTR;
  37.     nve_Size,
  38.     nve_Protection  : ULONG;
  39.  end;
  40.  
  41. const
  42. { bit definitions for mask in SetNVProtection().  Also used for
  43.  * NVEntry.nve_Protection.
  44.  }
  45.  NVEB_DELETE  = 0 ;
  46.  NVEB_APPNAME = 31;
  47.  
  48.  NVEF_DELETE  = 1;
  49.  NVEF_APPNAME = -2147483648;
  50.  
  51.  
  52. {***************************************************************************}
  53.  
  54.  
  55. { errors from StoreNV() }
  56.  NVERR_BADNAME   = 1;
  57.  NVERR_WRITEPROT = 2;
  58.  NVERR_FAIL      = 3;
  59.  NVERR_FATAL     = 4;
  60.  
  61.  
  62.  
  63. { --- functions in V40 or higher (Release 3.1) --- }
  64.  
  65. VAR NVBase : pLibrary;
  66.  
  67. FUNCTION DeleteNV(appName : pCHAR; itemName : pCHAR; killRequesters : LONGINT) : BOOLEAN;
  68. PROCEDURE FreeNVData(data : POINTER);
  69. FUNCTION GetCopyNV(appName : pCHAR; itemName : pCHAR; killRequesters : LONGINT) : POINTER;
  70. FUNCTION GetNVInfo(killRequesters : LONGINT) : pNVInfo;
  71. FUNCTION GetNVList(appName : pCHAR; killRequesters : LONGINT) : pMinList;
  72. FUNCTION SetNVProtection(appName : pCHAR; itemName : pCHAR; mask : LONGINT; killRequesters : LONGINT) : BOOLEAN;
  73. FUNCTION StoreNV(appName : pCHAR; itemName : pCHAR; data : POINTER; length : ULONG; killRequesters : LONGINT) : WORD;
  74.  
  75. IMPLEMENTATION
  76.  
  77. FUNCTION DeleteNV(appName : pCHAR; itemName : pCHAR; killRequesters : LONGINT) : BOOLEAN;
  78. BEGIN
  79.   ASM
  80.     MOVE.L  A6,-(A7)
  81.     MOVEA.L appName,A0
  82.     MOVEA.L itemName,A1
  83.     MOVE.L  killRequesters,D1
  84.     MOVEA.L NVBase,A6
  85.     JSR -048(A6)
  86.     MOVEA.L (A7)+,A6
  87.     TST.W   D0
  88.     BEQ.B   @end
  89.     MOVEQ   #1,D0
  90.   @end: MOVE.B  D0,@RESULT
  91.   END;
  92. END;
  93.  
  94. PROCEDURE FreeNVData(data : POINTER);
  95. BEGIN
  96.   ASM
  97.     MOVE.L  A6,-(A7)
  98.     MOVEA.L data,A0
  99.     MOVEA.L NVBase,A6
  100.     JSR -036(A6)
  101.     MOVEA.L (A7)+,A6
  102.   END;
  103. END;
  104.  
  105. FUNCTION GetCopyNV(appName : pCHAR; itemName : pCHAR; killRequesters : LONGINT) : POINTER;
  106. BEGIN
  107.   ASM
  108.     MOVE.L  A6,-(A7)
  109.     MOVEA.L appName,A0
  110.     MOVEA.L itemName,A1
  111.     MOVE.L  killRequesters,D1
  112.     MOVEA.L NVBase,A6
  113.     JSR -030(A6)
  114.     MOVEA.L (A7)+,A6
  115.     MOVE.L  D0,@RESULT
  116.   END;
  117. END;
  118.  
  119. FUNCTION GetNVInfo(killRequesters : LONGINT) : pNVInfo;
  120. BEGIN
  121.   ASM
  122.     MOVE.L  A6,-(A7)
  123.     MOVE.L  killRequesters,D1
  124.     MOVEA.L NVBase,A6
  125.     JSR -054(A6)
  126.     MOVEA.L (A7)+,A6
  127.     MOVE.L  D0,@RESULT
  128.   END;
  129. END;
  130.  
  131. FUNCTION GetNVList(appName : pCHAR; killRequesters : LONGINT) : pMinList;
  132. BEGIN
  133.   ASM
  134.     MOVE.L  A6,-(A7)
  135.     MOVEA.L appName,A0
  136.     MOVE.L  killRequesters,D1
  137.     MOVEA.L NVBase,A6
  138.     JSR -060(A6)
  139.     MOVEA.L (A7)+,A6
  140.     MOVE.L  D0,@RESULT
  141.   END;
  142. END;
  143.  
  144. FUNCTION SetNVProtection(appName : pCHAR; itemName : pCHAR; mask : LONGINT; killRequesters : LONGINT) : BOOLEAN;
  145. BEGIN
  146.   ASM
  147.     MOVE.L  A6,-(A7)
  148.     MOVEA.L appName,A0
  149.     MOVEA.L itemName,A1
  150.     MOVE.L  mask,D2
  151.     MOVE.L  killRequesters,D1
  152.     MOVEA.L NVBase,A6
  153.     JSR -066(A6)
  154.     MOVEA.L (A7)+,A6
  155.     TST.W   D0
  156.     BEQ.B   @end
  157.     MOVEQ   #1,D0
  158.   @end: MOVE.B  D0,@RESULT
  159.   END;
  160. END;
  161.  
  162. FUNCTION StoreNV(appName : pCHAR; itemName : pCHAR; data : POINTER; length : ULONG; killRequesters : LONGINT) : WORD;
  163. BEGIN
  164.   ASM
  165.     MOVE.L  A6,-(A7)
  166.     MOVEA.L appName,A0
  167.     MOVEA.L itemName,A1
  168.     MOVEA.L data,A2
  169.     MOVE.L  length,D0
  170.     MOVE.L  killRequesters,D1
  171.     MOVEA.L NVBase,A6
  172.     JSR -042(A6)
  173.     MOVEA.L (A7)+,A6
  174.     MOVE.L  D0,@RESULT
  175.   END;
  176. END;
  177.  
  178. END. (* UNIT NONVOLATILE *)
  179.